//导入需要使用的js库
import axios from "axios";
import router from "@/router";
import { getBaseURL } from "@/assets/js/config"; // 引入获取基础URL的函数
import { Message } from "element-ui";

const baseURL = getBaseURL();
// console.log(baseURL);

const instance = axios.create({
  baseURL,
  timeout: 5000000,
});

instance.interceptors.request.use(
  (config) => {
    config.headers.Authorization = localStorage.getItem("token");
    return config;
  },
  (err) => {
    return "报错";
  }
);

// 响应拦截器
instance.interceptors.response.use(
  (response) => {
    // 如果响应状态码是 200 或其他正常状态码，直接返回响应数据
    // console.log("错误信息", response);
    switch (response.data.code) {
      case 200:
        // 成功状态码
        return response;
      // break;
      case 401:
        // 未授权状态码
        router.push("/login"); // 跳转到登录页面
        break;
      case 1005:
        // 空处理
        // console.log(response);
        return "";
      default:
        // 其他状态码处理
        // Message.error(response.data.message || '请求失败');
        return Promise.reject(response.data.message);
    }
  },
  (err) => {
    console.error("错误信息", err);
    // 如果响应错误，检查状态码
    if (err.response && err.response.status === 500) {
      // 如果响应状态码是 500，跳转到错误页面
      router.push("/500"); // 替换为你的错误页面路径
    } else {
      router.push("/404"); // 替换为你的错误页面路径
    }
    // 返回错误信息，以便可以在调用 axios 的地方使用 .catch() 捕获
    // return "报错";
  }
);

function request(method, url, data) {
  return instance({
    method,
    url,
    [method.toLocaleLowerCase() == "get" ? "params" : "data"]: data,
  });
}

export { request };
